# 导入:
from contextlib import contextmanager
from sqlalchemy import create_engine
from sqlalchemy.orm import Session
import constant

# 初始化数据库连接:
engine = create_engine(
    constant.get_db_path(),
    max_overflow=0,   # 超过连接池大小外最多创建的连接数
    pool_size=5,      # 连接池大小
    pool_timeout=30,  # 连接池中没有线程最多等待时间，否则报错
    pool_recycle=-1,  # 多久之后对连接池中的连接进行回收（重置）-1不回收
)
# Session = sessionmaker(bind=engine)
session = Session(engine)

@contextmanager
def session_maker(session=session):
    try:
        yield session
        session.commit()
    except:
        session.rollback()
        raise
    finally:
        session.close()

# try:
#     # 连接MySQL数据库，地址：localhost:3306,账号：root,密码：123,数据库：test
#     MySQLEngine = create_engine(constant.get_db_path(), encoding='utf-8')
#     print('连接MySQL数据库成功', MySQLEngine)
#     # 连接SQLite数据库，如果当前目录不存在test.db文件则会自动生成
#     # SQLiteEngine = create_engine('sqlite:///:test.db', encoding='utf-8')
#     # print('连接SQLite数据库成功', SQLiteEngine)
# except Exception as e:
#     print('连接数据库失败', e)
